{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "2f4f0ea2-bc93-402a-b2d5-437c7e7b2c63",
   "metadata": {},
   "source": [
    "# Serialization speed of NumPy arrays\n",
    "\n",
    "In this example, we measure how much time it takes to serialize up to 1GB of random bytes, repeating the test 10 times. The type of the serialized Python variable has type `numpy.ndarray`.\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "7440aa9f-ae50-440e-b682-253c3db1405d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-02-13T21:14:25.709826Z",
     "iopub.status.busy": "2024-02-13T21:14:25.709496Z",
     "iopub.status.idle": "2024-02-13T21:15:55.490833Z",
     "shell.execute_reply": "2024-02-13T21:15:55.490280Z"
    }
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "cea8bfae2dab40c494c33284385b9505",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  1%|1         | 1/100 [00:08<13:30,  8.19s/it]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "Runs(keys(100)=[\"62c5f7b2-96c2-45e7-862f-76e2698c84cf\", \"bb958711-eb02-420a-9229-b1f76c30615a\", \"d96dfe2b-cb6a-4ff6-b56e-14f3cf5805bc\", \"c8ce7c9a-f19a-4cf1-9d5b-d088b5e12d15\", \"478c8f95-0ce2-4471-b2b8-f9605bb3ef02\", ...])"
      ],
      "text/plain": [
       "{UUID('62c5f7b2-96c2-45e7-862f-76e2698c84cf'): <mltraq.run.Run at 0x12f183a00>,\n",
       " UUID('bb958711-eb02-420a-9229-b1f76c30615a'): <mltraq.run.Run at 0x12f1838b0>,\n",
       " UUID('d96dfe2b-cb6a-4ff6-b56e-14f3cf5805bc'): <mltraq.run.Run at 0x12f183920>,\n",
       " UUID('c8ce7c9a-f19a-4cf1-9d5b-d088b5e12d15'): <mltraq.run.Run at 0x12f183990>,\n",
       " UUID('478c8f95-0ce2-4471-b2b8-f9605bb3ef02'): <mltraq.run.Run at 0x12f183a70>,\n",
       " UUID('b25f5d69-aabf-467c-87e7-6c679cbce9ae'): <mltraq.run.Run at 0x12f183ae0>,\n",
       " UUID('56b124ae-ff53-4bbd-8fd6-9d1d3f1e2fe6'): <mltraq.run.Run at 0x12f183b50>,\n",
       " UUID('91cd785f-d7ac-4327-8014-4da1f1e69ec8'): <mltraq.run.Run at 0x12f183bc0>,\n",
       " UUID('208bd762-ed9a-45b4-8417-abb8534f3457'): <mltraq.run.Run at 0x12f183c30>,\n",
       " UUID('8abe0b55-0f24-4fa9-a3aa-38f1b5854935'): <mltraq.run.Run at 0x12f183ca0>,\n",
       " UUID('bdc639a5-199d-46bb-ba60-486b869539d6'): <mltraq.run.Run at 0x12f183d10>,\n",
       " UUID('0a166dd6-10ef-4a45-9ded-bef8e3604b27'): <mltraq.run.Run at 0x12f183d80>,\n",
       " UUID('4b1ad2ef-1f99-4d5a-ae02-7eece6aabf1f'): <mltraq.run.Run at 0x12f183df0>,\n",
       " UUID('da426684-aa89-499d-83e8-a78f44cd7fac'): <mltraq.run.Run at 0x12f183e60>,\n",
       " UUID('b22f592a-be11-4675-b322-d83a0c8ffb86'): <mltraq.run.Run at 0x12f183ed0>,\n",
       " UUID('c8616e47-fb80-4af5-ab3d-3bd71bb62d31'): <mltraq.run.Run at 0x12f183f40>,\n",
       " UUID('36aa28a5-9845-4660-8017-602011e5f5b0'): <mltraq.run.Run at 0x12f1ec040>,\n",
       " UUID('51c7402c-7f50-4432-80d1-e540dad86b48'): <mltraq.run.Run at 0x12f1ec0b0>,\n",
       " UUID('85e1d271-d957-4fe1-9302-5d33a819a1e7'): <mltraq.run.Run at 0x12f1ec120>,\n",
       " UUID('b4bb800a-0a75-47dc-8738-515a225975f9'): <mltraq.run.Run at 0x12f1ec190>,\n",
       " UUID('40e6fa79-7002-4b4a-9dbe-2b84c89fe001'): <mltraq.run.Run at 0x12f1ec200>,\n",
       " UUID('5c17df16-4745-41d8-84d2-b3fd30322d2e'): <mltraq.run.Run at 0x12f1ec270>,\n",
       " UUID('0e9d37bc-7547-4e3a-a513-0f4b3ed7604f'): <mltraq.run.Run at 0x12f1ec2e0>,\n",
       " UUID('2a5883ad-af22-4c56-b2e0-b9c83728fd32'): <mltraq.run.Run at 0x12f1ec350>,\n",
       " UUID('b483760e-798e-49ef-b67a-0a7d1a17276a'): <mltraq.run.Run at 0x12f1ec3c0>,\n",
       " UUID('295207e9-1bb3-4166-8043-feba8aa010b2'): <mltraq.run.Run at 0x12f1ec430>,\n",
       " UUID('fd027d4c-b2f9-4d52-a288-fc40859acec8'): <mltraq.run.Run at 0x12f1ec4a0>,\n",
       " UUID('c42f63c2-cc24-4f16-8404-2ddce8901991'): <mltraq.run.Run at 0x12f1ec510>,\n",
       " UUID('3e2e834d-7042-4e69-b454-fcf16acb5957'): <mltraq.run.Run at 0x12f1ec580>,\n",
       " UUID('76022467-9e2c-45e3-9baa-8186d03eecca'): <mltraq.run.Run at 0x12f1ec5f0>,\n",
       " UUID('8732a88c-968e-4137-a8d2-2553e319bf49'): <mltraq.run.Run at 0x12f1ec660>,\n",
       " UUID('884eacae-5010-4974-9a40-d56e300a5c4f'): <mltraq.run.Run at 0x12f1ec6d0>,\n",
       " UUID('436da81e-60fa-4728-a4da-701c2f6aee15'): <mltraq.run.Run at 0x12f1ec740>,\n",
       " UUID('f111ba28-6b6e-4fb1-9300-2f087b6a5e95'): <mltraq.run.Run at 0x12f1ec7b0>,\n",
       " UUID('b7f66b81-e871-4d86-9fe1-1283ffdf8c92'): <mltraq.run.Run at 0x12f1ec820>,\n",
       " UUID('f6e1e035-f8e1-47ee-9819-62bcf33cffb6'): <mltraq.run.Run at 0x12f1ec890>,\n",
       " UUID('87054c95-9b83-4aed-993e-0d35e2cd01d3'): <mltraq.run.Run at 0x12f1ec900>,\n",
       " UUID('6013308b-0456-43af-b738-833e0f1ecb2f'): <mltraq.run.Run at 0x12f1ec970>,\n",
       " UUID('9126f838-cecb-4b13-a29d-c5c922a26fdc'): <mltraq.run.Run at 0x12f1ec9e0>,\n",
       " UUID('984c3b8b-6100-4f99-80f8-4cd2bb75a279'): <mltraq.run.Run at 0x12f1eca50>,\n",
       " UUID('3a280a63-17ea-4cc5-b567-f6c7e5c660a4'): <mltraq.run.Run at 0x12f1ecac0>,\n",
       " UUID('19cd6b51-c313-4be8-974b-7bf79d094982'): <mltraq.run.Run at 0x12f1ecb30>,\n",
       " UUID('dd597447-a05b-49e0-817f-1d8ae16ad329'): <mltraq.run.Run at 0x12f1ecba0>,\n",
       " UUID('01b4eedf-6552-4ec5-8ecc-d1b51329804f'): <mltraq.run.Run at 0x12f1ecc10>,\n",
       " UUID('6172847f-887a-45d6-8990-f564828b2649'): <mltraq.run.Run at 0x12f1ecc80>,\n",
       " UUID('92bc580a-2c17-4755-a988-225b5a88ef77'): <mltraq.run.Run at 0x12f1eccf0>,\n",
       " UUID('ab925d7d-67bc-49be-a1b2-4fdc3de965e6'): <mltraq.run.Run at 0x12f1ecd60>,\n",
       " UUID('2c97e8d3-6667-4409-b365-b67e8ba82b5d'): <mltraq.run.Run at 0x12f1ecdd0>,\n",
       " UUID('54a44f35-e3a2-4b6b-b59a-188caeb6f757'): <mltraq.run.Run at 0x12f1ece40>,\n",
       " UUID('158956f2-632d-47a6-b72b-b87ff12b9c83'): <mltraq.run.Run at 0x12f1eceb0>,\n",
       " UUID('3e72a084-5fcb-4b4b-838b-d37ea3e785d8'): <mltraq.run.Run at 0x12f1ecf20>,\n",
       " UUID('b99afea1-8921-4223-a6fe-f7a520ab033f'): <mltraq.run.Run at 0x12f1ecf90>,\n",
       " UUID('41b94ea5-52d9-44b1-a956-63fd805f2078'): <mltraq.run.Run at 0x12f1ed000>,\n",
       " UUID('a3a27c9a-cb97-4d7c-afdc-8608855f0eb8'): <mltraq.run.Run at 0x12f1ed070>,\n",
       " UUID('7a441a3b-7d12-486d-9fd7-ca7ccb2c561a'): <mltraq.run.Run at 0x12f1ed0e0>,\n",
       " UUID('e0266a66-0969-4580-a667-b6f68f71500c'): <mltraq.run.Run at 0x12f1ed150>,\n",
       " UUID('16e52af6-9376-4b12-8d28-636833bdffde'): <mltraq.run.Run at 0x12f1ed1c0>,\n",
       " UUID('46ab837d-b3f3-4845-842f-46af217af236'): <mltraq.run.Run at 0x12f1ed230>,\n",
       " UUID('2401ec25-6d6d-432d-9fab-ad0c7a8ef381'): <mltraq.run.Run at 0x12f1ed2a0>,\n",
       " UUID('98000250-f344-4bbc-b894-035f8049528c'): <mltraq.run.Run at 0x12f1ed310>,\n",
       " UUID('9fce958a-73d0-4791-a91e-8ecbedeaca78'): <mltraq.run.Run at 0x12f1ed380>,\n",
       " UUID('9d7f1eff-0311-4d70-afdc-44a3898a29c7'): <mltraq.run.Run at 0x12f1ed3f0>,\n",
       " UUID('aa37df77-7522-477e-b508-63d85a656622'): <mltraq.run.Run at 0x12f1ed460>,\n",
       " UUID('06e41124-8875-45eb-bd2e-938c7757d7fc'): <mltraq.run.Run at 0x12f1ed4d0>,\n",
       " UUID('145298c4-ddb1-4e48-b497-af5cb8637a18'): <mltraq.run.Run at 0x12f1ed540>,\n",
       " UUID('2508ffa1-ecd6-4152-98c2-72d0c6729bec'): <mltraq.run.Run at 0x12f1ed5b0>,\n",
       " UUID('c2a3d945-a7ae-4b84-a510-c74cae6bc09c'): <mltraq.run.Run at 0x12f1ed620>,\n",
       " UUID('8930be87-91e3-497c-a9f0-df3ed90b4951'): <mltraq.run.Run at 0x12f1ed690>,\n",
       " UUID('b293a1b5-b987-4e79-836f-e18e5d4f3383'): <mltraq.run.Run at 0x12f1ed700>,\n",
       " UUID('0a199a96-fc6c-4cea-877d-ed54a0fb3147'): <mltraq.run.Run at 0x12f1ed770>,\n",
       " UUID('67516822-c283-47cb-b596-1a9b6d053cde'): <mltraq.run.Run at 0x12f1ed7e0>,\n",
       " UUID('d902c477-f3cb-46c3-a260-87fda97371e4'): <mltraq.run.Run at 0x12f1ed850>,\n",
       " UUID('9d8036b4-270b-4ad0-83c1-b96d54642689'): <mltraq.run.Run at 0x12f1ed8c0>,\n",
       " UUID('07e9f715-68be-4f06-8924-fc61e6daf6e3'): <mltraq.run.Run at 0x12f1ed930>,\n",
       " UUID('d17d125d-1297-44e8-84b4-10765871ee88'): <mltraq.run.Run at 0x12f1ed9a0>,\n",
       " UUID('5bdfe2f9-7086-4785-9ebc-7c4ab8614f96'): <mltraq.run.Run at 0x12f1eda10>,\n",
       " UUID('bc0a2428-ae65-4e93-ba07-9afa7619ca74'): <mltraq.run.Run at 0x12f1eda80>,\n",
       " UUID('b8e78026-2830-480c-910a-928ba3c1f37f'): <mltraq.run.Run at 0x12f1edaf0>,\n",
       " UUID('75652951-43e2-40b7-bc1d-566526f0ad13'): <mltraq.run.Run at 0x12f1edb60>,\n",
       " UUID('dceeac02-74e8-4dfd-b69d-ebc03d755c42'): <mltraq.run.Run at 0x12f1edbd0>,\n",
       " UUID('9e0a0160-c6a9-4ad2-8351-e400c530e633'): <mltraq.run.Run at 0x12f1edc40>,\n",
       " UUID('78d94223-c81b-4f1c-aeb3-a340f455355a'): <mltraq.run.Run at 0x12f1edcb0>,\n",
       " UUID('8579e912-80f6-4ab3-bb09-61e119f5ee7a'): <mltraq.run.Run at 0x12f1edd20>,\n",
       " UUID('0a164698-24b8-4262-9854-37b799ddbeb2'): <mltraq.run.Run at 0x12f1edd90>,\n",
       " UUID('8c5311f0-3d9e-44c9-a2f3-d209c5c4f2ca'): <mltraq.run.Run at 0x12f1ede00>,\n",
       " UUID('40927510-5251-4144-8d07-27691755bdb6'): <mltraq.run.Run at 0x12f1ede70>,\n",
       " UUID('aba83ee3-5909-4b4f-ab64-f8706023de98'): <mltraq.run.Run at 0x12f1edee0>,\n",
       " UUID('39db5752-c2d0-40f2-811d-53040491af05'): <mltraq.run.Run at 0x12f1edf50>,\n",
       " UUID('c0da6275-ab79-46c3-8acd-ead7a7d0382f'): <mltraq.run.Run at 0x12f1edfc0>,\n",
       " UUID('6df2ef39-d139-4ee4-a45b-b79ec168750b'): <mltraq.run.Run at 0x12f1ee030>,\n",
       " UUID('31f0e0fc-d8c6-4f31-aa72-c445a4ce5ce7'): <mltraq.run.Run at 0x12f1ee0a0>,\n",
       " UUID('48456ce4-6f72-4f74-95e6-2ee9be90db07'): <mltraq.run.Run at 0x12f1ee110>,\n",
       " UUID('99fb0d52-b820-4c51-9f57-05e4d70f177b'): <mltraq.run.Run at 0x12f1ee180>,\n",
       " UUID('a66eef0f-f802-42c4-99e7-eb5ed154c0e2'): <mltraq.run.Run at 0x12f1ee1f0>,\n",
       " UUID('9b731f46-7d54-462a-806b-fbadb56f2f8d'): <mltraq.run.Run at 0x12f1ee260>,\n",
       " UUID('f33696a2-bc01-494b-80ad-795945e8ffb0'): <mltraq.run.Run at 0x12f1ee2d0>,\n",
       " UUID('cac6248a-d325-46e5-a9e7-d752467cb4e7'): <mltraq.run.Run at 0x12f1ee340>,\n",
       " UUID('dbd49ddd-a619-49dd-bf53-23bc67fec6f4'): <mltraq.run.Run at 0x12f1ee3b0>,\n",
       " UUID('e81ad740-cb38-45e5-89dd-5080b456ad70'): <mltraq.run.Run at 0x12f1ee420>,\n",
       " UUID('c4e16c7d-32fa-4aae-8781-1e31ff20c1fa'): <mltraq.run.Run at 0x12f1ee490>}"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os\n",
    "\n",
    "import numpy as np\n",
    "from mltraq import Run, Sequence, create_experiment\n",
    "\n",
    "\n",
    "def eval_persist(run: Run):\n",
    "    \"\"\"\n",
    "    Measure the time required to persist and load\n",
    "    an experiment with a run holding a blob of\n",
    "    up to 1GB of randomness, in a NumPy array.\n",
    "    \"\"\"\n",
    "\n",
    "    e = create_experiment()\n",
    "    run.fields.log = Sequence()\n",
    "    e.fields.blob = np.array(os.urandom(run.params.n_bytes))\n",
    "\n",
    "    run.fields.log.append(tag=\"a\")\n",
    "    e.persist()\n",
    "    run.fields.log.append(tag=\"b\")\n",
    "    e.reload()\n",
    "    run.fields.log.append(tag=\"c\")\n",
    "\n",
    "    durations = run.fields.log.df().pivot_table(index=\"tag\", values=\"timestamp\")[\"timestamp\"]\n",
    "    run.fields.n_bytes = run.params.n_bytes\n",
    "    run.fields.duration_persist = durations.b - durations.a\n",
    "    run.fields.duration_load = durations.c - durations.b\n",
    "\n",
    "\n",
    "e = create_experiment()\n",
    "\n",
    "# We vary `i` to average on 10 runs per configuration,\n",
    "# the number of written bytes ranges from 10B to 10GB\n",
    "e.add_runs(\n",
    "    i=range(10),\n",
    "    n_bytes=[10**i for i in range(10)],\n",
    ")\n",
    "\n",
    "# Execute experiment, runs executed in foreground\n",
    "e.execute(eval_persist, n_jobs=1)\n",
    "\n",
    "# Overview of runs\n",
    "e.runs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "4fb50cd7-8e7f-4069-8598-1d73811a6cd3",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-02-13T21:15:55.505680Z",
     "iopub.status.busy": "2024-02-13T21:15:55.505480Z",
     "iopub.status.idle": "2024-02-13T21:15:55.518002Z",
     "shell.execute_reply": "2024-02-13T21:15:55.517671Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "n_bytes\n",
       "1            0 days 00:00:00.021452339\n",
       "10           0 days 00:00:00.004898713\n",
       "100          0 days 00:00:00.043507968\n",
       "1000         0 days 00:00:00.004704844\n",
       "10000        0 days 00:00:00.004720204\n",
       "100000       0 days 00:00:00.009054822\n",
       "1000000      0 days 00:00:00.028673689\n",
       "10000000     0 days 00:00:00.015729484\n",
       "100000000    0 days 00:00:00.138723840\n",
       "1000000000   0 days 00:00:01.770619827\n",
       "Name: duration_persist, dtype: timedelta64[ns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# \"Persist\" elapsed time\n",
    "e.runs.df().groupby(\"n_bytes\").duration_persist.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4b4551c8-4f33-4a2d-954b-4db9ff4bdfb6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-02-13T21:15:55.520056Z",
     "iopub.status.busy": "2024-02-13T21:15:55.519911Z",
     "iopub.status.idle": "2024-02-13T21:15:55.532120Z",
     "shell.execute_reply": "2024-02-13T21:15:55.531794Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "n_bytes\n",
       "1            0 days 00:00:00.023198976\n",
       "10           0 days 00:00:00.008873881\n",
       "100          0 days 00:00:00.001059788\n",
       "1000         0 days 00:00:00.001021030\n",
       "10000        0 days 00:00:00.019154099\n",
       "100000       0 days 00:00:00.001186611\n",
       "1000000      0 days 00:00:00.001745612\n",
       "10000000     0 days 00:00:00.008737459\n",
       "100000000    0 days 00:00:00.097067699\n",
       "1000000000   0 days 00:00:02.923016755\n",
       "Name: duration_load, dtype: timedelta64[ns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# \"Reload\" elapsed time\n",
    "e.runs.df().groupby(\"n_bytes\").duration_load.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5ed433c3-67bc-4c7f-922b-10d1ff1c592d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.6"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {
     "2e083233e0bd43d4bf6997276fd687ed": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "2.0.0",
      "model_name": "HTMLStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "2.0.0",
       "_model_name": "HTMLStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "StyleView",
       "background": null,
       "description_width": "",
       "font_size": null,
       "text_color": null
      }
     },
     "32dc0b9bdf8a4f90b60b9eebe7083140": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "2.0.0",
      "model_name": "ProgressStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "2.0.0",
       "_model_name": "ProgressStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "StyleView",
       "bar_color": null,
       "description_width": ""
      }
     },
     "42e362293c9a4651a2ca27802545c338": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "61b1620e66954d5cb2b2e8a8b6a01899": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "2.0.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "2.0.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "2.0.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_allow_html": false,
       "layout": "IPY_MODEL_ec2449011934494aa2b49ba411a18b14",
       "placeholder": "​",
       "style": "IPY_MODEL_df862ee93f9d4cd8a56cd03224b837d4",
       "tabbable": null,
       "tooltip": null,
       "value": " 100/100 [01:29&lt;00:00,  1.12it/s]"
      }
     },
     "716763d9b64a4265bcc0770045a9c12f": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": "hidden",
       "width": null
      }
     },
     "a37afe5f522d4057b985b045bcb63f17": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "2.0.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "2.0.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "2.0.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_allow_html": false,
       "layout": "IPY_MODEL_42e362293c9a4651a2ca27802545c338",
       "placeholder": "​",
       "style": "IPY_MODEL_2e083233e0bd43d4bf6997276fd687ed",
       "tabbable": null,
       "tooltip": null,
       "value": "100%"
      }
     },
     "aee6929328af487ebcad4e6015536f18": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "2.0.0",
      "model_name": "FloatProgressModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "2.0.0",
       "_model_name": "FloatProgressModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "2.0.0",
       "_view_name": "ProgressView",
       "bar_style": "",
       "description": "",
       "description_allow_html": false,
       "layout": "IPY_MODEL_fc67048925cd4e7d9dd837747570e5b5",
       "max": 100,
       "min": 0,
       "orientation": "horizontal",
       "style": "IPY_MODEL_32dc0b9bdf8a4f90b60b9eebe7083140",
       "tabbable": null,
       "tooltip": null,
       "value": 100
      }
     },
     "cea8bfae2dab40c494c33284385b9505": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "2.0.0",
      "model_name": "HBoxModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "2.0.0",
       "_model_name": "HBoxModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "2.0.0",
       "_view_name": "HBoxView",
       "box_style": "",
       "children": [
        "IPY_MODEL_a37afe5f522d4057b985b045bcb63f17",
        "IPY_MODEL_aee6929328af487ebcad4e6015536f18",
        "IPY_MODEL_61b1620e66954d5cb2b2e8a8b6a01899"
       ],
       "layout": "IPY_MODEL_716763d9b64a4265bcc0770045a9c12f",
       "tabbable": null,
       "tooltip": null
      }
     },
     "df862ee93f9d4cd8a56cd03224b837d4": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "2.0.0",
      "model_name": "HTMLStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "2.0.0",
       "_model_name": "HTMLStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "StyleView",
       "background": null,
       "description_width": "",
       "font_size": null,
       "text_color": null
      }
     },
     "ec2449011934494aa2b49ba411a18b14": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "fc67048925cd4e7d9dd837747570e5b5": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     }
    },
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
